package com.glsc.ngateway.common.api.platform.dto.it.networkassets;

import cn.hutool.core.annotation.Alias;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.glsc.ngateway.common.api.common.dto.BaseEntityDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.SuperBuilder;

import java.io.Serializable;
import java.util.Collections;
import java.util.List;

/**
 * 主机信息维护
 * @author xuchang
 */
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel
@JsonInclude
@Data
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public class HostInformationMaintenanceDto extends BaseEntityDto implements Serializable {

    private static final long serialVersionUID = -5899716037373070280L;

    @Alias(value = "主机")
    @ApiModelProperty(value = "主机")
    private String host;

    @Alias(value = "主机名")
    @ApiModelProperty(value = "主机名")
    private String hostname;

    @Alias(value = "业务区域")
    @ApiModelProperty(value = "业务区域")
    private String serviceZone;

    @Alias(value = "设备角色")
    @ApiModelProperty(value = "设备角色")
    private String deviceRole;

    @Alias(value = "SNMP版本")
    @ApiModelProperty(value = "SNMP版本")
    private String snmpVersion;

    /**
     *  加解密在DO层完成
     */
    @Alias(value = "SNMP只读团体字")
    @ApiModelProperty(value = "SNMP只读团体字")
    private String snmpRoCommunity;

    @Alias(value = "远程管理接口")
    @ApiModelProperty(value = "远程管理接口")
    private String mgmtInterface;

    /**
     *  加解密在DO层完成
     */
    @Alias(value = "用户名")
    @ApiModelProperty(value = "用户名")
    private String username;

    /**
     *  加解密在DO层完成
     */
    @Alias(value = "密码")
    @ApiModelProperty(value = "密码")
    private String password;

    @JsonIgnore
    private String task;

    @Alias(value = "任务列表")
    @ApiModelProperty(value = "任务列表")
    private List<String> taskList;

    @Alias(value = "绑定监控")
    @ApiModelProperty(value = "绑定监控")
    private Integer hostid;

    @JsonIgnore
    private String bindSerialNum;

    @Builder.Default
    @Alias(value = "绑定设备资产")
    @ApiModelProperty(value = "绑定设备资产")
    private List<String> bindSerialNumList = Collections.EMPTY_LIST;

    @Builder.Default
    @ApiModelProperty(value = "绑定设备资产详细信息")
    private List<NetworkAssetMaintenanceDto> bindSerialDetailList = Collections.EMPTY_LIST;

    @JsonIgnore
    private String deployedMode;

    @Builder.Default
    @Alias(value = "绑定部署模式")
    @ApiModelProperty(value = "绑定部署模式")
    private List<String> deployedModeList = Collections.EMPTY_LIST;

    @Alias(value = "对端主机")
    @ApiModelProperty(value = "对端主机")
    private String peer;
}
